﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NHibernate;
using NHibernate.Criterion;
using bolsatrabajo.Dominio.NHIBERNATE;

namespace bolsatrabajo.Persistencia.NHIBERNATE
{
    public class PostulanteNH : MaestroNH<Postulante, String>, IPostulanteNH
    {
         public ICollection<Postulante> ListarxProfesion(String profesion)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                var postulantes = sesion
                    .CreateCriteria(typeof(Postulante))
                    .Add(Restrictions.Eq("Profesion", profesion))
                    .List<Postulante>();
                return postulantes;
            }
        }

        public ICollection<Postulante> ListarxProfesionyUbicacion(String profesion, String ubicacion)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                var postulantes = sesion
                    .CreateCriteria(typeof(Postulante))
                    .Add(Restrictions.Eq("Profesion", profesion))
                    .Add(Restrictions.Eq("Ubicacion", ubicacion))
                    .List<Postulante>();
                return postulantes;
            }
        }
        public ICollection<Postulante> ListarTodos()
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                ICollection<Postulante> resultado = sesion
                        .CreateCriteria(typeof(Postulante))
                        .List<Postulante>();
                return resultado;
            }
        }
        public Postulante ObtenerPorNombresyDni(String nombres, String dni)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                Postulante postulante = sesion
                        .CreateCriteria(typeof(Postulante))
                        .Add(Restrictions.Eq("Nombres", nombres))
                        .Add(Restrictions.Eq("Dni", dni))
                        .UniqueResult<Postulante>();
                return postulante;
            }
        }
        public ICollection<Postulante> ListarPostulantes()
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                ICollection<Postulante> resultado = sesion
                        .CreateCriteria(typeof(Postulante))
                        .List<Postulante>();
                return resultado;
            }
        }
        public Postulante ObtenerPorCorreoYContrasena(String xcorreo, String xcontrasena)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                Postulante postulante = sesion
                        .CreateCriteria(typeof(Postulante))
                        .Add(Restrictions.Eq("Correo", xcorreo))
                        .Add(Restrictions.Eq("Contrasena", xcontrasena))
                        .UniqueResult<Postulante>();
                return postulante;
            }
        }
    }
}